package com.sy.config;

/**
 * @className: AlipayConfig
 * @author: Mr.Liu
 * @date: 2025/11/11 16:01
 * @Version: 1.0
 * @description:
 */

import com.alipay.api.AlipayClient;
import com.alipay.api.DefaultAlipayClient;
import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

/**
 * 支付宝沙箱配置类，初始化支付客户端并读取配置参数
 */
@Configuration
@ConfigurationProperties(prefix = "alipay.sandbox") // 读取yml中alipay.sandbox前缀的配置
@Data
public class AlipayConfig {
    private String appId;               // 沙箱APPID（从支付宝沙箱平台获取）
    private String privateKey;          // 商户私钥（自己生成的RSA2私钥）
    private String alipayPublicKey;     // 支付宝公钥（沙箱平台提供）
    private String notifyUrl;           // 异步回调地址（支付结果通知，需公网可访问）
    private String gatewayUrl = "https://openapi-sandbox.dl.alipaydev.com/gateway.do"; // 沙箱网关

    /**
     * 初始化支付宝客户端（核心对象，用于调用支付宝API）
     */
    @Bean
    public AlipayClient alipayClient() {
        return new DefaultAlipayClient(
                gatewayUrl,       // 支付宝网关
                appId,            // APPID
                privateKey,       // 商户私钥
                "json",           // 数据格式
                "UTF-8",          // 编码
                alipayPublicKey,  // 支付宝公钥
                "RSA2"            // 签名方式（必须与沙箱配置一致）
        );
    }
}
